﻿-- =============================================
-- Author:		Name
-- Create date: 
-- Description:	
-- =============================================
CREATE PROCEDURE [dbo].[CopyVal] 
	-- Add the parameters for the stored procedure here
	@OldId uniqueidentifier, 
	@NewId uniqueidentifier
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	insert into Falt
    select 
		x.Id, @NewId, x.Namn, x.Typ, x.[Default], x.[Required]
    from (
		select *
		from Falt
		where ValId = @OldId
	) x
	
	insert into FaltAlternativ
    select 
		x.Id, @NewId, x.FaltId, x.Namn
    from (
		select * 
		from FaltAlternativ
		where ValId = @OldId
	) x
	
	insert into Blankett
    select 
		x.Id, @NewId, x.Namn, x.AndradAv, x.Andrad, x.SkapadAv, x.Skapad, x.BlankettTyp
    from (
		select * 
		from Blankett
		where ValId = @OldId
	) x
	
	insert into BlankettFalt
    select 
		x.Id, @NewId, x.BlankettId, x.FaltId, x.RadIndex
    from (
		select * 
		from BlankettFalt
		where ValId = @OldId
	) x
	
	insert into Valkrets
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning, x.ValkretsNr
    from (
		select * 
		from Valkrets
		where ValId = @OldId
	) x
	
	insert into Forsamling
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning, x.ValkretsId, x.ForsamlingNr
    from (
		select * 
		from Forsamling
		where ValId = @OldId
	) x
	
	insert into Valdistrikt
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.BemanningKlar, x.ForsamlingId, x.ValdistriktNr
    from (
		select * 
		from Valdistrikt
		where ValId = @OldId
	) x
	
    insert into Stadsdel
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning
    from (
		select * 
		from Stadsdel
		where ValId = @OldId
	) x
    
    insert into ByggnadTyp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning
    from (
		select * 
		from ByggnadTyp
		where ValId = @OldId
	) x
    
    insert into Byggnad
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning, x.LeveransAdress, x.LeveransPostNr, x.LeveransPostOrt,
		x.BesokAdress, x.BesokPostNr, x.BesokPostOrt, x.StadsdelId,
		x.TypId, x.Inaktiv, x.Koordinater, x.KanExpandera, x.InformatorKravs,
		x.Fritext, null, x.TelNr, x.Hemsida, x.Epost
    from (
		select * 
		from Byggnad
		where ValId = @OldId
	) x
    
    insert into Lokal
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning, x.ByggnadId, x.ValdistriktId, x.Inaktiv
    from (
		select * 
		from Lokal
		where ValId = @OldId
	) x
    
    insert into ByggnadHandelseLogg
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.AtgardKravs, x.Text, x.ByggnadId, x.Datum
    from (
		select * 
		from ByggnadHandelseLogg
		where ValId = @OldId
	) x
	
    insert into PersonTyp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning
    from (
		select * 
		from PersonTyp
		where ValId = @OldId
	) x
    
    insert into Person
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Personnummer, x.Fornamn, x.Efternamn, x.TelNr, x.MobTelNr, 
		x.Epost, x.Gatuadress, x.PostNr, x.PostOrt, x.Inaktiv, 
		x.AnmalanGodkand, x.AnsokanGodkand, x.Fritext
    from (
		select * 
		from Person
		where ValId = @OldId
	) x
	
	insert into PersonPersonTyp
	select x.Id, @NewId, x.PersonId, x.PersonTypId
	from (
		select *
		from PersonPersonTyp
		where ValId = @OldId
	) x
	
	insert into PersonHandelseLogg
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.UppfoljningKravs, x.Text, x.PersonId, x.Datum
    from (
		select * 
		from PersonHandelseLogg
		where ValId = @OldId
	) x
	
	insert into PersonByggnad
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.PersonId, x.ByggnadId
    from (
		select * 
		from PersonByggnad
		where ValId = @OldId
	) x
	
	insert into Funktion
    select 
		x.Id, @NewId, x.Beskrivning, x.PublikBeskrivning, x.Arvode, x.FastErsattning,
		x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, x.ArkivIntegration, x.LISAIntegration
    from (
		select * 
		from Funktion
		where ValId = @OldId
	) x

	insert into Grupp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Benamning, x.Fritext
    from (
		select * 
		from Grupp
		where ValId = @OldId
	) x
	
	insert into BemanningGrupp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.PersonId, x.FunktionId, x.GruppId, 0
    from (
		select * 
		from BemanningGrupp
		where ValId = @OldId
	) x
	
	insert into BemanningValdistrikt
	select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.PersonId, x.FunktionId, x.ValdistriktId, 0, 0, 0
	from (
		select *
		from BemanningValdistrikt
		where ValId = @OldId
	) x
	
	insert into MaterielTyp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Beskrivning, x.VisaILista
    from (
		select * 
		from MaterielTyp
		where ValId = @OldId
	) x
	
	insert into MaterielTypMaterielTyp
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.ParentId, x.ChildId
    from (
		select * 
		from MaterielTypMaterielTyp
		where ValId = @OldId
	) x
	
	insert into Materiel
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Antal, x.ByggnadId, x.MaterielTypId, x.Beskrivning
    from (
		select * 
		from Materiel
		where ValId = @OldId
	) x
	
	insert into Skylt
    select 
		x.Id, @NewId, x.Skapad, x.SkapadAv, x.Andrad, x.AndradAv, 
		x.Beskrivning, x.ByggnadId, x.LiggerIVaskan
    from (
		select * 
		from Skylt
		where ValId = @OldId
	) x
END